package com.jane.utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Environment;
import android.text.TextUtils;
import android.widget.ImageView;

import com.jane.bean.JsonData;
import com.jane.gzzb.R;

import org.xutils.DbManager;
import org.xutils.ex.DbException;
import org.xutils.image.ImageOptions;
import org.xutils.x;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Jane on 2016/11/13.
 */

public class Utils {
    //获取数据库管理器
    private static DbManager.DaoConfig config = new DbManager.DaoConfig();
    private static DbManager mDbManager = x.getDb(config);
    private static ImageOptions mOptions = new ImageOptions.Builder().
            // 设置是否使用缓存
                    setUseMemCache(true)
            // 设置加载失败的图片
//                    setFailureDrawableId().
            // 设置 加载过程中的图片
//                    setLoadingDrawableId()
            // 设置 是否支持GIF 动态图
            .setIgnoreGif(true).build();
    private static ImageOptions mCircleOptions = new ImageOptions.Builder().
            // 设置是否使用缓存
                    setUseMemCache(true)
            // 设置加载失败的图片
//                    setFailureDrawableId().
            // 设置 加载过程中的图片
//                    setLoadingDrawableId()
            // 设置 是否支持GIF 动态图
            .setIgnoreGif(true)
            .setCircular(true).build();

    //加载图片
    public static void loadImage(ImageView iv, String url) {
        if (!TextUtils.isEmpty(url)) {
            x.image().bind(iv, url, mOptions);
        }
    }

    //加载图片
    public static void loadCircleImage(ImageView iv, String url) {
        if (!TextUtils.isEmpty(url)) {
            x.image().bind(iv, url, mCircleOptions);
        }
    }


    //获取知道id名称开头的id的值
    public static ArrayList<Integer> getIds(String idName) {
        ArrayList<Integer> list = new ArrayList<>();
        Class<R.id> cls = R.id.class;
        //获取R.id类中的定义的属性
        Field[] arrf = cls.getDeclaredFields();
        for (Field field : arrf) {
            if (field.getName().startsWith(idName)) {
                try {
                    list.add(field.getInt(null));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
        return list;
    }

    // 判断是否有网络
    public static boolean isNetwork(Context context) {
        // 网络连接管理器
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = manager.getActiveNetworkInfo();// 获取网络信息；
        if (info != null) {
            return info.isConnected();
        } else {
            return false;
        }
    }

    // 判断外部存储(sdcard存储）是否有用
    public static boolean externalStorageIsUseable() {
        // 获取外部存储的状态
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)) {
            return true; // 外部存储可用
        }
        return false; // 外部存储不可用
    }

    //获取数据库中的jsonData
    public static String getJsonString(String path) {
        List<JsonData> jsonData = null;
//        Log.e("test", "getJsonString: "+path);
        try {
            jsonData = mDbManager.selector(JsonData.class).where("path", "=", path).findAll();
            if (jsonData != null && jsonData.size() > 0 && !TextUtils.isEmpty(jsonData.get(0).getJsonString())) {
                return jsonData.get(0).getJsonString();
            }
        } catch (DbException e) {
            e.printStackTrace();
        }
        return null;
    }

    //保存数据库中的jsonData
    public static void saveJsonString(JsonData obj) {
        try {
            mDbManager.save(obj);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
}
